↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) → U1_AG(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) → SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s)
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → U5_AAA(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN_AAA(Xs, Zs, Ys)
U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AG(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → U1_AA(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s)
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AA(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_AA(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
U3_AA(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_AA(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
U3_AA(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → MERGE_IN_AAA(Y1s, Y2s, Ys)
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → =_IN_AA(X, Y)
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_AAA(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → MERGE_IN_AAA(.(X, Xs), Ys, Zs)
U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_AG(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_AG(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → MERGE_IN_AAG(Y1s, Y2s, Ys)
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAG(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → =_IN_GA(X, Y)
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_AAG(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → MERGE_IN_AAG(.(X, Xs), Ys, Zs)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) → U1_AG(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) → SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s)
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → U5_AAA(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN_AAA(Xs, Zs, Ys)
U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AG(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → U1_AA(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s)
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AA(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_AA(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
U3_AA(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_AA(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
U3_AA(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → MERGE_IN_AAA(Y1s, Y2s, Ys)
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → =_IN_AA(X, Y)
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_AAA(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → MERGE_IN_AAA(.(X, Xs), Ys, Zs)
U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_AG(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_AG(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → MERGE_IN_AAG(Y1s, Y2s, Ys)
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAG(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → =_IN_GA(X, Y)
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_AAG(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → MERGE_IN_AAG(.(X, Xs), Ys, Zs)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAG(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → MERGE_IN_AAG(.(X, Xs), Ys, Zs)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAG(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → MERGE_IN_AAG(.(X, Xs), Ys, Zs)
=_in_ga(X, X) → =_out_ga(X, X)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MERGE_IN_AAG(.(X, Zs)) → U6_AAG(X, Zs, =_in_ga(X))
U6_AAG(X, Zs, =_out_ga(Y)) → MERGE_IN_AAG(Zs)
=_in_ga(X) → =_out_ga(X)
=_in_ga(x0)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → MERGE_IN_AAA(.(X, Xs), Ys, Zs)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → MERGE_IN_AAA(.(X, Xs), Ys, Zs)
=_in_aa(X, X) → =_out_aa(X, X)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U6_AAA(=_out_aa) → MERGE_IN_AAA
MERGE_IN_AAA → U6_AAA(=_in_aa)
=_in_aa → =_out_aa
=_in_aa
MERGE_IN_AAA → U6_AAA(=_out_aa)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U6_AAA(=_out_aa) → MERGE_IN_AAA
MERGE_IN_AAA → U6_AAA(=_out_aa)
=_in_aa → =_out_aa
=_in_aa
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U6_AAA(=_out_aa) → MERGE_IN_AAA
MERGE_IN_AAA → U6_AAA(=_out_aa)
=_in_aa
=_in_aa
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U6_AAA(=_out_aa) → MERGE_IN_AAA
MERGE_IN_AAA → U6_AAA(=_out_aa)
U6_AAA(=_out_aa) → MERGE_IN_AAA
MERGE_IN_AAA → U6_AAA(=_out_aa)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN_AAA(Xs, Zs, Ys)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN_AAA(Xs, Zs, Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN_AAA → SPLIT_IN_AAA
SPLIT_IN_AAA → SPLIT_IN_AAA
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → U1_AA(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AA(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → U1_AA(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AA(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
=_in_aa(X, X) → =_out_aa(X, X)
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U1_AA(split_out_aaa) → U2_AA(mergesort_in_aa)
U2_AA(mergesort_out_aa) → MERGESORT_IN_AA
U1_AA(split_out_aaa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(split_in_aaa)
split_in_aaa → U5_aaa(split_in_aaa)
mergesort_in_aa → mergesort_out_aa
mergesort_in_aa → U1_aa(split_in_aaa)
U5_aaa(split_out_aaa) → split_out_aaa
U1_aa(split_out_aaa) → U2_aa(mergesort_in_aa)
split_in_aaa → split_out_aaa
U2_aa(mergesort_out_aa) → U3_aa(mergesort_in_aa)
U3_aa(mergesort_out_aa) → U4_aa(merge_in_aaa)
U4_aa(merge_out_aaa) → mergesort_out_aa
merge_in_aaa → merge_out_aaa
merge_in_aaa → U6_aaa(=_in_aa)
U6_aaa(=_out_aa) → U7_aaa(merge_in_aaa)
=_in_aa → =_out_aa
U7_aaa(merge_out_aaa) → merge_out_aaa
split_in_aaa
mergesort_in_aa
U5_aaa(x0)
U1_aa(x0)
U2_aa(x0)
U3_aa(x0)
U4_aa(x0)
merge_in_aaa
U6_aaa(x0)
=_in_aa
U7_aaa(x0)
MERGESORT_IN_AA → U1_AA(split_out_aaa)
MERGESORT_IN_AA → U1_AA(U5_aaa(split_in_aaa))
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U1_AA(split_out_aaa) → U2_AA(mergesort_in_aa)
MERGESORT_IN_AA → U1_AA(split_out_aaa)
U2_AA(mergesort_out_aa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(U5_aaa(split_in_aaa))
U1_AA(split_out_aaa) → MERGESORT_IN_AA
split_in_aaa → U5_aaa(split_in_aaa)
mergesort_in_aa → mergesort_out_aa
mergesort_in_aa → U1_aa(split_in_aaa)
U5_aaa(split_out_aaa) → split_out_aaa
U1_aa(split_out_aaa) → U2_aa(mergesort_in_aa)
split_in_aaa → split_out_aaa
U2_aa(mergesort_out_aa) → U3_aa(mergesort_in_aa)
U3_aa(mergesort_out_aa) → U4_aa(merge_in_aaa)
U4_aa(merge_out_aaa) → mergesort_out_aa
merge_in_aaa → merge_out_aaa
merge_in_aaa → U6_aaa(=_in_aa)
U6_aaa(=_out_aa) → U7_aaa(merge_in_aaa)
=_in_aa → =_out_aa
U7_aaa(merge_out_aaa) → merge_out_aaa
split_in_aaa
mergesort_in_aa
U5_aaa(x0)
U1_aa(x0)
U2_aa(x0)
U3_aa(x0)
U4_aa(x0)
merge_in_aaa
U6_aaa(x0)
=_in_aa
U7_aaa(x0)
U1_AA(split_out_aaa) → U2_AA(U1_aa(split_in_aaa))
U1_AA(split_out_aaa) → U2_AA(mergesort_out_aa)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
U2_AA(mergesort_out_aa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(split_out_aaa)
U1_AA(split_out_aaa) → U2_AA(mergesort_out_aa)
U1_AA(split_out_aaa) → U2_AA(U1_aa(split_in_aaa))
U1_AA(split_out_aaa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(U5_aaa(split_in_aaa))
split_in_aaa → U5_aaa(split_in_aaa)
mergesort_in_aa → mergesort_out_aa
mergesort_in_aa → U1_aa(split_in_aaa)
U5_aaa(split_out_aaa) → split_out_aaa
U1_aa(split_out_aaa) → U2_aa(mergesort_in_aa)
split_in_aaa → split_out_aaa
U2_aa(mergesort_out_aa) → U3_aa(mergesort_in_aa)
U3_aa(mergesort_out_aa) → U4_aa(merge_in_aaa)
U4_aa(merge_out_aaa) → mergesort_out_aa
merge_in_aaa → merge_out_aaa
merge_in_aaa → U6_aaa(=_in_aa)
U6_aaa(=_out_aa) → U7_aaa(merge_in_aaa)
=_in_aa → =_out_aa
U7_aaa(merge_out_aaa) → merge_out_aaa
split_in_aaa
mergesort_in_aa
U5_aaa(x0)
U1_aa(x0)
U2_aa(x0)
U3_aa(x0)
U4_aa(x0)
merge_in_aaa
U6_aaa(x0)
=_in_aa
U7_aaa(x0)
U2_AA(mergesort_out_aa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(split_out_aaa)
U1_AA(split_out_aaa) → U2_AA(mergesort_out_aa)
U1_AA(split_out_aaa) → U2_AA(U1_aa(split_in_aaa))
U1_AA(split_out_aaa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(U5_aaa(split_in_aaa))
split_in_aaa → U5_aaa(split_in_aaa)
mergesort_in_aa → mergesort_out_aa
mergesort_in_aa → U1_aa(split_in_aaa)
U5_aaa(split_out_aaa) → split_out_aaa
U1_aa(split_out_aaa) → U2_aa(mergesort_in_aa)
split_in_aaa → split_out_aaa
U2_aa(mergesort_out_aa) → U3_aa(mergesort_in_aa)
U3_aa(mergesort_out_aa) → U4_aa(merge_in_aaa)
U4_aa(merge_out_aaa) → mergesort_out_aa
merge_in_aaa → merge_out_aaa
merge_in_aaa → U6_aaa(=_in_aa)
U6_aaa(=_out_aa) → U7_aaa(merge_in_aaa)
=_in_aa → =_out_aa
U7_aaa(merge_out_aaa) → merge_out_aaa
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) → U1_AG(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) → SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s)
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → U5_AAA(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN_AAA(Xs, Zs, Ys)
U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AG(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → U1_AA(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s)
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AA(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_AA(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
U3_AA(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_AA(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
U3_AA(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → MERGE_IN_AAA(Y1s, Y2s, Ys)
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → =_IN_AA(X, Y)
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_AAA(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → MERGE_IN_AAA(.(X, Xs), Ys, Zs)
U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_AG(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_AG(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → MERGE_IN_AAG(Y1s, Y2s, Ys)
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAG(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → =_IN_GA(X, Y)
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_AAG(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → MERGE_IN_AAG(.(X, Xs), Ys, Zs)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) → U1_AG(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) → SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s)
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → U5_AAA(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN_AAA(Xs, Zs, Ys)
U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AG(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → U1_AA(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s)
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AA(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_AA(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
U3_AA(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_AA(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
U3_AA(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → MERGE_IN_AAA(Y1s, Y2s, Ys)
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → =_IN_AA(X, Y)
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_AAA(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → MERGE_IN_AAA(.(X, Xs), Ys, Zs)
U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_AG(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_AG(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → MERGE_IN_AAG(Y1s, Y2s, Ys)
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAG(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → =_IN_GA(X, Y)
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_AAG(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → MERGE_IN_AAG(.(X, Xs), Ys, Zs)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAG(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → MERGE_IN_AAG(.(X, Xs), Ys, Zs)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
MERGE_IN_AAG(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAG(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
U6_AAG(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → MERGE_IN_AAG(.(X, Xs), Ys, Zs)
=_in_ga(X, X) → =_out_ga(X, X)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PiDP
U6_AAG(X, Zs, =_out_ga(X, Y)) → MERGE_IN_AAG(Zs)
MERGE_IN_AAG(.(X, Zs)) → U6_AAG(X, Zs, =_in_ga(X))
=_in_ga(X) → =_out_ga(X, X)
=_in_ga(x0)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → MERGE_IN_AAA(.(X, Xs), Ys, Zs)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
MERGE_IN_AAA(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_AAA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
U6_AAA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → MERGE_IN_AAA(.(X, Xs), Ys, Zs)
=_in_aa(X, X) → =_out_aa(X, X)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ PiDP
↳ PiDP
U6_AAA(=_out_aa) → MERGE_IN_AAA
MERGE_IN_AAA → U6_AAA(=_in_aa)
=_in_aa → =_out_aa
=_in_aa
MERGE_IN_AAA → U6_AAA(=_out_aa)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
U6_AAA(=_out_aa) → MERGE_IN_AAA
MERGE_IN_AAA → U6_AAA(=_out_aa)
=_in_aa → =_out_aa
=_in_aa
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ PiDP
↳ PiDP
U6_AAA(=_out_aa) → MERGE_IN_AAA
MERGE_IN_AAA → U6_AAA(=_out_aa)
=_in_aa
=_in_aa
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
U6_AAA(=_out_aa) → MERGE_IN_AAA
MERGE_IN_AAA → U6_AAA(=_out_aa)
U6_AAA(=_out_aa) → MERGE_IN_AAA
MERGE_IN_AAA → U6_AAA(=_out_aa)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN_AAA(Xs, Zs, Ys)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) → SPLIT_IN_AAA(Xs, Zs, Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
SPLIT_IN_AAA → SPLIT_IN_AAA
SPLIT_IN_AAA → SPLIT_IN_AAA
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → U1_AA(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AA(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
mergesort_in_ag([], []) → mergesort_out_ag([], [])
mergesort_in_ag(.(X, []), .(X, [])) → mergesort_out_ag(.(X, []), .(X, []))
mergesort_in_ag(.(X, .(Y, Xs)), Ys) → U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
=_in_aa(X, X) → =_out_aa(X, X)
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_ag(X, Y, Xs, Ys, merge_in_aag(Y1s, Y2s, Ys))
merge_in_aag([], Xs, Xs) → merge_out_aag([], Xs, Xs)
merge_in_aag(Xs, [], Xs) → merge_out_aag(Xs, [], Xs)
merge_in_aag(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aag(X, Xs, Y, Ys, Zs, =_in_ga(X, Y))
=_in_ga(X, X) → =_out_ga(X, X)
U6_aag(X, Xs, Y, Ys, Zs, =_out_ga(X, Y)) → U7_aag(X, Xs, Y, Ys, Zs, merge_in_aag(.(X, Xs), Ys, Zs))
U7_aag(X, Xs, Y, Ys, Zs, merge_out_aag(.(X, Xs), Ys, Zs)) → merge_out_aag(.(X, Xs), .(Y, Ys), .(X, Zs))
U4_ag(X, Y, Xs, Ys, merge_out_aag(Y1s, Y2s, Ys)) → mergesort_out_ag(.(X, .(Y, Xs)), Ys)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
MERGESORT_IN_AA(.(X, .(Y, Xs)), Ys) → U1_AA(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_AA(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
U1_AA(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → MERGESORT_IN_AA(X1s, Y1s)
U2_AA(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → MERGESORT_IN_AA(X2s, Y2s)
split_in_aaa(.(X, Xs), .(X, Ys), Zs) → U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys))
mergesort_in_aa([], []) → mergesort_out_aa([], [])
mergesort_in_aa(.(X, []), .(X, [])) → mergesort_out_aa(.(X, []), .(X, []))
mergesort_in_aa(.(X, .(Y, Xs)), Ys) → U1_aa(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s))
U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) → split_out_aaa(.(X, Xs), .(X, Ys), Zs)
U1_aa(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) → U2_aa(X, Y, Xs, Ys, X2s, mergesort_in_aa(X1s, Y1s))
split_in_aaa([], [], []) → split_out_aaa([], [], [])
U2_aa(X, Y, Xs, Ys, X2s, mergesort_out_aa(X1s, Y1s)) → U3_aa(X, Y, Xs, Ys, Y1s, mergesort_in_aa(X2s, Y2s))
U3_aa(X, Y, Xs, Ys, Y1s, mergesort_out_aa(X2s, Y2s)) → U4_aa(X, Y, Xs, Ys, merge_in_aaa(Y1s, Y2s, Ys))
U4_aa(X, Y, Xs, Ys, merge_out_aaa(Y1s, Y2s, Ys)) → mergesort_out_aa(.(X, .(Y, Xs)), Ys)
merge_in_aaa([], Xs, Xs) → merge_out_aaa([], Xs, Xs)
merge_in_aaa(Xs, [], Xs) → merge_out_aaa(Xs, [], Xs)
merge_in_aaa(.(X, Xs), .(Y, Ys), .(X, Zs)) → U6_aaa(X, Xs, Y, Ys, Zs, =_in_aa(X, Y))
U6_aaa(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) → U7_aaa(X, Xs, Y, Ys, Zs, merge_in_aaa(.(X, Xs), Ys, Zs))
=_in_aa(X, X) → =_out_aa(X, X)
U7_aaa(X, Xs, Y, Ys, Zs, merge_out_aaa(.(X, Xs), Ys, Zs)) → merge_out_aaa(.(X, Xs), .(Y, Ys), .(X, Zs))
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
U1_AA(split_out_aaa) → U2_AA(mergesort_in_aa)
U2_AA(mergesort_out_aa) → MERGESORT_IN_AA
U1_AA(split_out_aaa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(split_in_aaa)
split_in_aaa → U5_aaa(split_in_aaa)
mergesort_in_aa → mergesort_out_aa
mergesort_in_aa → U1_aa(split_in_aaa)
U5_aaa(split_out_aaa) → split_out_aaa
U1_aa(split_out_aaa) → U2_aa(mergesort_in_aa)
split_in_aaa → split_out_aaa
U2_aa(mergesort_out_aa) → U3_aa(mergesort_in_aa)
U3_aa(mergesort_out_aa) → U4_aa(merge_in_aaa)
U4_aa(merge_out_aaa) → mergesort_out_aa
merge_in_aaa → merge_out_aaa
merge_in_aaa → U6_aaa(=_in_aa)
U6_aaa(=_out_aa) → U7_aaa(merge_in_aaa)
=_in_aa → =_out_aa
U7_aaa(merge_out_aaa) → merge_out_aaa
split_in_aaa
mergesort_in_aa
U5_aaa(x0)
U1_aa(x0)
U2_aa(x0)
U3_aa(x0)
U4_aa(x0)
merge_in_aaa
U6_aaa(x0)
=_in_aa
U7_aaa(x0)
MERGESORT_IN_AA → U1_AA(split_out_aaa)
MERGESORT_IN_AA → U1_AA(U5_aaa(split_in_aaa))
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
U1_AA(split_out_aaa) → U2_AA(mergesort_in_aa)
MERGESORT_IN_AA → U1_AA(split_out_aaa)
U2_AA(mergesort_out_aa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(U5_aaa(split_in_aaa))
U1_AA(split_out_aaa) → MERGESORT_IN_AA
split_in_aaa → U5_aaa(split_in_aaa)
mergesort_in_aa → mergesort_out_aa
mergesort_in_aa → U1_aa(split_in_aaa)
U5_aaa(split_out_aaa) → split_out_aaa
U1_aa(split_out_aaa) → U2_aa(mergesort_in_aa)
split_in_aaa → split_out_aaa
U2_aa(mergesort_out_aa) → U3_aa(mergesort_in_aa)
U3_aa(mergesort_out_aa) → U4_aa(merge_in_aaa)
U4_aa(merge_out_aaa) → mergesort_out_aa
merge_in_aaa → merge_out_aaa
merge_in_aaa → U6_aaa(=_in_aa)
U6_aaa(=_out_aa) → U7_aaa(merge_in_aaa)
=_in_aa → =_out_aa
U7_aaa(merge_out_aaa) → merge_out_aaa
split_in_aaa
mergesort_in_aa
U5_aaa(x0)
U1_aa(x0)
U2_aa(x0)
U3_aa(x0)
U4_aa(x0)
merge_in_aaa
U6_aaa(x0)
=_in_aa
U7_aaa(x0)
U1_AA(split_out_aaa) → U2_AA(U1_aa(split_in_aaa))
U1_AA(split_out_aaa) → U2_AA(mergesort_out_aa)
↳ Prolog
↳ PredefinedPredicateTransformerProof
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
U2_AA(mergesort_out_aa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(split_out_aaa)
U1_AA(split_out_aaa) → U2_AA(mergesort_out_aa)
U1_AA(split_out_aaa) → U2_AA(U1_aa(split_in_aaa))
U1_AA(split_out_aaa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(U5_aaa(split_in_aaa))
split_in_aaa → U5_aaa(split_in_aaa)
mergesort_in_aa → mergesort_out_aa
mergesort_in_aa → U1_aa(split_in_aaa)
U5_aaa(split_out_aaa) → split_out_aaa
U1_aa(split_out_aaa) → U2_aa(mergesort_in_aa)
split_in_aaa → split_out_aaa
U2_aa(mergesort_out_aa) → U3_aa(mergesort_in_aa)
U3_aa(mergesort_out_aa) → U4_aa(merge_in_aaa)
U4_aa(merge_out_aaa) → mergesort_out_aa
merge_in_aaa → merge_out_aaa
merge_in_aaa → U6_aaa(=_in_aa)
U6_aaa(=_out_aa) → U7_aaa(merge_in_aaa)
=_in_aa → =_out_aa
U7_aaa(merge_out_aaa) → merge_out_aaa
split_in_aaa
mergesort_in_aa
U5_aaa(x0)
U1_aa(x0)
U2_aa(x0)
U3_aa(x0)
U4_aa(x0)
merge_in_aaa
U6_aaa(x0)
=_in_aa
U7_aaa(x0)
U2_AA(mergesort_out_aa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(split_out_aaa)
U1_AA(split_out_aaa) → U2_AA(mergesort_out_aa)
U1_AA(split_out_aaa) → U2_AA(U1_aa(split_in_aaa))
U1_AA(split_out_aaa) → MERGESORT_IN_AA
MERGESORT_IN_AA → U1_AA(U5_aaa(split_in_aaa))
split_in_aaa → U5_aaa(split_in_aaa)
mergesort_in_aa → mergesort_out_aa
mergesort_in_aa → U1_aa(split_in_aaa)
U5_aaa(split_out_aaa) → split_out_aaa
U1_aa(split_out_aaa) → U2_aa(mergesort_in_aa)
split_in_aaa → split_out_aaa
U2_aa(mergesort_out_aa) → U3_aa(mergesort_in_aa)
U3_aa(mergesort_out_aa) → U4_aa(merge_in_aaa)
U4_aa(merge_out_aaa) → mergesort_out_aa
merge_in_aaa → merge_out_aaa
merge_in_aaa → U6_aaa(=_in_aa)
U6_aaa(=_out_aa) → U7_aaa(merge_in_aaa)
=_in_aa → =_out_aa
U7_aaa(merge_out_aaa) → merge_out_aaa